package lib

import "math"

func init() {
	Probs = append(Probs, Problem{
		Num:         625,
		Discription: "找出最小的正整数，使得其每位乘积等于指定值",
		Level:       2,
		Labels: map[string]int{
			"数学": 1,
		},
	})
}

func SmallestFactorization(num int) int {
	if num == 1 {
		return 1
	}

	res := 0
	multiple := 1
	for num != 1 {
		//尽量先用更大的数去除，尽可能减少总的位数
		i := 9
		for ; i >= 2; i-- {
			if num%i == 0 {
				num /= i
				//把新来的数字放前面，这样整体更小
				res += i * multiple
				//如果当前已超过int32直接返回0
				if res > math.MaxInt32 {
					return 0
				}
				break
			}
		}

		//j==1表示指定值有2-9以外的因子
		if i == 1 {
			return 0
		}

		multiple *= 10
	}

	return res
}